package com.jeremyfeinstein.okhttputil.callback;

import okhttp3.Call;
import okhttp3.Request;
import okhttp3.Response;

public abstract class Callback<T> {
	/**
	 * UI Thread
	 *
	 * @param request
	 */
	public void onBefore(Request request) {
	}

	/**
	 * UI Thread
	 *
	 * @param
	 */
	public void onAfter() {
	}

	/**
	 * UI Thread
	 *
	 * @param progress
	 */
	public void inProgress(float progress) {

	}

	public void onMipTimeOut(){

	}

	/**
	 * Thread Pool Thread
	 *
	 * @param response
	 */
	public abstract T parseNetworkResponse(Response response) throws Exception;

	public abstract void onError(Call call, int statusCode, Exception e);

	public abstract void onResponse(T response);

	public static Callback CALLBACK_DEFAULT = new Callback() {

		@Override
		public Object parseNetworkResponse(Response response) throws Exception {
			return null;
		}

		@Override
		public void onError(Call call, int statusCode, Exception e) {

		}

		@Override
		public void onResponse(Object response) {

		}
	};

}